package p0;

class Leetcode_4 {
    public double findMedianSortedArrays(int[] nums1, int[] nums2) {
        int i1 = 0, i2 = 0;
        int a = 0;
        int m = nums1.length + nums2.length;
        if ((m & 1) == 0) {
            if (nums1.length == 0) {
                return (nums2[m / 2] + nums2[m / 2 - 1]) / 2.0;
            }
            if (nums2.length == 0) {
                return (nums1[m / 2] + nums1[m / 2 - 1]) / 2.0;
            }
            while ((i1 + i2) < m / 2) {
                if (i1 == nums1.length) {
                    a = nums2[i2++];
                } else if (i2 == nums2.length) {
                    a = nums1[i1++];
                } else if (nums1[i1] < nums2[i2]) {
                    a = nums1[i1++];
                } else {
                    a = nums2[i2++];
                }
            }
            if (i1 == nums1.length) {
                m = nums2[i2];
            } else if (i2 == nums2.length) {
                m = nums1[i1];
            } else if (nums1[i1] < nums2[i2]) {
                m = nums1[i1];
            } else {
                m = nums2[i2];
            }
            return (a + m) / 2.0;
        } else {
            if (nums1.length == 0) {
                return nums2[m / 2];
            }
            if (nums2.length == 0) {
                return nums1[m / 2];
            }
            while ((i1 + i2) < m / 2 + 1) {
                if (i1 == nums1.length) {
                    a = nums2[i2++];
                } else if (i2 == nums2.length) {
                    a = nums1[i1++];
                } else if (nums1[i1] < nums2[i2]) {
                    a = nums1[i1++];
                } else {
                    a = nums2[i2++];
                }
            }
            return a;
        }
    }
}